'use strict';

module.exports = app => {
  // 引入数据类型
  const { INTEGER, STRING, TEXT } = app.Sequelize;
  const Blog = app.model.define('blog', {
    userId: {
      type: INTEGER,
      allowNull: false,
      comment: '外键 userid -> users.id',
    },
    content: {
      type: TEXT,
      allowNull: false,
      comment: '微博内容',
    },
    image: {
      type: STRING,
      allowNull: true,
      comment: '微博图片',
    },
  });
  // 创建外键
  Blog.associate = () => {
    // 用户与博客是1对多的关系
    app.model.Blog.belongsTo(app.model.User, {
      foreignKey: 'userId',
      targetKey: 'id',
    });

    // 和 UserRelation 表关联起来
    app.model.Blog.belongsTo(app.model.UserRelation, {
      foreignKey: 'userId', // 同一个字段不可以设置两个外键，这样写，只是在 sequelize 中做关联，并不是真的设置了两个外键
      targetKey: 'followerId',
    });

    // 和 UserRelation 表关联起来
    app.model.Blog.hasMany(app.model.AtRelation, {
      foreignKey: 'blogId', // 同一个字段不可以设置两个
    });
  };

  return Blog;
};
